package dao

import (
	"go-mvc-generator/code/model"
	. "go-mvc-generator/db"
)

var GetSysMenuDao = new(SysMenuDao)

type SysMenuDao struct{}

func (d *SysMenuDao) create(model model.SysMenu) error {
	err := Db.Create(&model).Error
	return err
}

func (d *SysMenuDao) Update(model model.SysMenu) error {
	err := Db.Model(&model).Updates(model).Error
	return err
}

func (d *SysMenuDao) GetById(id int) (sysMenu model.SysMenu) {
	Db.Where("id =?", id).First(&sysMenu)
	return sysMenu
}

func (d *SysMenuDao) DelById(id int) bool {
	return Db.Where("id =?", id).Delete(&model.SysMenu{}).Error == nil
}

func (d *SysMenuDao) Page(pageNum int, pageSize int, sysMenuQuery model.SysMenuQuery) (list []model.SysMenu, total int64) {
	Db.Model(&model.SysMenu{}).
		Where("dept_name LIKE ?", "%"+sysMenuQuery.MenuName+"%").
		Count(&total)
	Db.
		Where("dept_name LIKE ?", "%"+sysMenuQuery.MenuName+"%").
		Offset((pageNum - 1) * pageSize).
		Limit(pageSize).
		Find(&list)
	return list, total
}

func (d *SysMenuDao) GetList(pageNum, pageSize int) (sysMenuList []model.SysMenu, total int64) {
	curDb := Db.Table("sys_menu")
	curDb.Count(&total)
	curDb.Limit(pageSize).Offset((pageNum - 1) * pageSize).Order("create_time desc").Find(&sysMenuList)
	return sysMenuList, total
}
